home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Suzy B Software 2
/
Suzy B Software CD-ROM 2 (1994).iso
/
bootup
/
boot_n2z
/
winx23g
/
winx22.eng
< prev
next >
Wrap
Text File
|
1995-05-02
|
24KB
|
450 lines
PROGRAM
WINX 2.2 [10/17/1993]
DESCPRITION
WINX expands GEM of TOS version up to version 4.04 to some of the
features which also are usable in MultiTOS. From users point of
view this is (among other stuff) for example more windows, control
elements for background windows and an expanded user interface
(this relates to the usage of control elements). Additionally
some bugs and deficiencies of the different GEM versions have been
removed or repaired and expansions have been built in. A very
developer friendly function is a mode to let WINX check for
improper calls of the AES window library.
Theoretically, ALL 'clean written' 'well-behaved' GEM programs
should get along with these changes easily, but the practical side
is slightly :-) different. Even TOS internal GEM Desktop had to be
changed for some reasons. Please be sure, that if one of your
programs will have several problems with WINX, it also has very
good chances to have problems with MultiTOS, too. It would be a
good idea to give a hint to the authors to test the program with
WINX and to let them get into contact with ATARI to let them be
informed how to legally get MultiTOS for testing purposes.
WINX will integrate an expanded user interface into GEM if the TOS
version is greater than 2.xx. This changes the way of mouse usage:
Starting with this version of WINX, both mouse buttons can be used
to select the window control elements. The right button will induce
action, that is started after release of the button. If the left
mouse botton is used, action is performed immediately and as long
as the mouse button is not released again. You can recognize this
state by a change of the mouse form: The arrow looses its shaft.
A good example for this is the moving of a window. If you select
the move bar of the window with the right mouse botton, then a
frame is drawn which can be moved to a different position. Only
after releasing the mouse button the window is redrawn at the new
position. If you use the left mouse button to select the move bar,
the window is redrawn constantly just where the mouse moves. The
same behavoiur holds for the usage of the sizer, closer, full-size
box and scroll bars.
Action started by klicking the scroller arrows of into the
scrollbar did not change. They already and always leaded to direct
response of the program. Aditionally, a clicking on the scroller
arrows with the right mouse key sets the scrollbar to the start
(or end) of the scrollable area. If you click into the scrollarea,
the scrollbar is directly put to this position.
Another new feature is an addition for handling a click on the
title bar of the window. Up to now, this could only top a back-
ground window. Now it also is possible to backdrop windows, if a
program can already handle the newly defined message.
The CONTROL key is a modifier for actions which are performed by
clicking window control elements. If CONTROL is pressed while the
mouse click is performed, the normal meaning of the control
elements is lifted away. Instead of this, the window is put into
front or background. This is very useful if a window is only
partly visible.
If CONTROL is pressed while the right mouse button is released,
the action that SHOULD be performed is ignored. For example if you
started to move a window, but then again prefer to leave it at the
previous place.
Here is a list of the changes/expansions WINX does install into
GEM. In detail
'*' stands for new stuff in this version
'[G..]' or
'[L..] stands for a flag which indicates, that this
feature can be activated or switched off
(see part CONFIGURATION in this text)
Unfortunately this part of manual might be very technical - it
is despite of that a good idea to read it at least once, because
you otherwise will miss some features of WINX.
GEM-SCRENMGR:
(the part of GEM, which besides other things deals with clicks on
window elements)
- [L1] use control elements for background windows
* [G10] BackDrop function: By clicking on the title bar of the top
window it is put to the backgorund (disabled), if the application
supports the backdrop message or only one window is open.
* [G9] if you hold the CONTROL key while performing a click on a
window control element, the meaning of the control element is
disabled. Instead of the normal state, a background window gets
topped or a topped window is set into background (if BackDrop is
turned ON)
* Repeat for scroll arrows for TOS 1.00
* Fixed AES problems with WM_ARROWED messages (ARROWFIX patches)
These are:
TOS >= 1.04: Doubly sent message
TOS 2.06/3.06: Doubly sent message, delayed message, wrong overlength
TOS 4.01-4.04: Doubly sent message, delayed message
ARROWFIX.ENG (part of ARROWFIX) tells you details.
- optical response for usage of control elements
[G4] Selection of scroll arrows
[G5] Selection of scroll bars
[G6] Selection of mover element
[G7] Selection of sizer element
* [G2] Send right mouse button clicks on window frames
to the SCRENMGR (otherwise to the application)
* [G3] Left mouse button click activates realtime functions
(otherwise: G2=ON: right mouse button click, G2=OFF: double
click with left mouse button)
* [G11] It's now possible to move windows beyond the left
border of the screen
GEM-DESKTOP:
- handling of events for background windows
* Integration of backdrop
* topping and untopping of windows does no loger change the
selected files in directory windows of NEWDESK from TOS 2.x/3.x
- TOS 2.x/3.x Desktop handles 8 instead of 7 windows, TOS 1.x
only 4, as always.
- If scrolling is performed in background windows, the desktop
tries only to newly display as little as possible and copy as
much as possible.
Window management:
- [G1] Increase number of available windows to 40 (instead of 8)
- [L1] use control elements for backed windows
- [L2] minimise number of window frame elements (up to now, a
window with a sizer always had a horizontal and a vertical bar,
which does not neccessarily makes sense)
- [G8] wider frame for slider elements on the window frame (very
much discussed option :-) similar to old MultiTOS versions)
* Window Colors for TOS 1.xx can be set with WINCOLOR.CPX. This
CPX is in the humble opinion of the author, anyway preferably
to be used instead of the original WCOLOS.CPX, even for
TOS 2.xx/3.xx.
* Improved redraw for windows (new display of frame and contents)
* Activating (and deactivating) does not change the WF_PREVXYWH-
rectangle of the window any more. In this rectangle, the most
recent change of position and size of the window is placed.
* [L3] Opening and topping a window send WM_ONTOP, backdrop and
closing WM_UNTOPPED
* only one object tree is used to display the background
* wind_set has been modified (optimized WF_SLIDE routine;
WF_BOTTOM; WF_BEVENT)
* wind_get has been modified (WF_NEWDESK; WF_BEVENT; WF_BOTTOM;
WF_OWNER; WF_TOP; WF_COLOR; WF_DCOLOR)
- modification of wind_calc for the changed way window frames are
built
* completyly new module for the calculation of rectangle lists,
which can optimize calculation time and number of rectangles
* [L4] Optimized redraw for topping windows:
For topping and closig of a window, if possible only the parts
of the newly topped window are newly displayed. Unfortunately
this leads to incomplete redraws for some applications.
* [L5] Optimized redraw for moving windows:
If this switch is set, all visible parts of the window are
copied, and redraw messages are only sent for the rest of the
rectangles. Eventually redraw messages have to be merged, this
can force redraw for copied areas.
* [L6] Optimized redraw for sizing windows:
If this switch is set, applications get only redraw messages
for the newly visible parts of the window.
* [L7] Optimized merging of redraw messages:
With all curent TOS Versions, the number of redraw messages
per window that was stored in the message buffer of the
application was limited to one. If a second message had to be
stored, the redraw rectangle of the first message was replaced
with a rectangle, that contained a rectangle which held the
retangles of the old and the new message. MultiTOS does NOT
merge these messages any more. Both solutions have limitations.
WINX implements the usage of a compromise. WINX only merges two
redraw messages if the resulting rectangle is not bigger than
25% of the sum of both single rectangles. Furthermore the
applications can store two redraw messages per window now.
* [L9] There are two ways, how the scroll arrows can be displayed
in the frame of a window now: At top/bottom leftmost/rightmost
position of the scrollbar or all just besides the other in the
rightmost downmost edge of the window frame.
* It now is possible to only use wind_update if no other program
already owns control. Additionally wind_update is checked for
underflow.
- all other routines have been modified to be able to handle the
increased number of windows
* [G11] 3D window frame (starting with GEM 3.31)
Various:
- enlargement of the message buffer of an application from 8 to
40 standard messages (this can highly help avoiding deadlocks
of AES)
- The wait time for a mouse click has been set to exactly be the
same as the setting of the doubleclick time. In all current
versions of GEM, there is no consistant handling of the
duration beetween a mouseclick of the user and the procession
of it by the SCRENMGR. Up to now, the duration is dependant
from the question, if minimum one application or accessory waits
for a doubleclick event or not. The usage of the doubleclick as
a timebase is necessary, because otherwise, in case of a click
on a title element of a backed window, moving and topping could
not always be distinguished
* TIMER/BUTTON problem for evnt_multi() has been fixed, this means
you only get the button event, if the application owns the mouse
* support for WF_BEVENT flags during the mapping of button events
to applications
* TOS 1.xx: Now the dynamically requested structures for
administration of accesories are explicitly cleared (as in newer
TOS versions). This avoids problems with AUTO folder programs,
which might have used these parts of memory already in the boot
phase (leaving garbage there).
* [G12] Fill patterns for GEM objects now always will be drawn
relative to the left topmost edge of the object (instead of
being relative to 0/0 of the current screen).
* Now also for TOS 1.00 and 1.02, the name of the active
application is reset every time the internal Desktop is started.
* [L8] If this switch is switched ON, WINX displays an Alert every
time where an application tries to call OS window functions with
wrong parameters.
* [G13] If a program B is started from the currently running
program A, now the name, GEM recognizes as the currently running
appliction, is set to be B. At the point of termination of B,
the name is reset to A. This makes appl_find() work correctly
also in the above case. (Up to now, A has been found instead
of B).
* wind_new() now sets the ownership of mouseclicks to the main
application (instead of setting it to the SCRENMGR). This avoids
the loss of the first mouse click on a desktop object after an
application has been terminated.
* A call of wind_unpdate( BEG_UPDATE) has been inserted into the
wind_new() call. wind_new() is used by the desktop to clear up
the screen after termination of applications. The insertion of
wind_update() helps to avoid, that accesories are affected by
this at an unfavorable time.
* A bug in the mechanism of the task dispatch in GEM 3.xx has
been fixed. This should suppress (possible harmful) task
switching during the display of alerts generated from the
critical error handler.
* 'Phantom typist' patch
INSTALLATION
To do all these changes, WINX must deeply take control of the
working of AES and GEM. The necessary changes can be achived with
three methods:
a) Patching a copy of GEM in RAM
You install a copy of GEM in the machines RAM at BOOT time
which is modified by WINX before GEM is started. This can be
achieved with one of the following programs.
Name; Description; where to get; author; RAM used; uses cookie
ROMRAM TOS speeder for TT030;
Mailbox Maus HH2 (Freeware);
Alexander Herzlinger; >256 KB; PTOS
VRAM030 Virtual memory management for TT030 and FALCON030;
OverScan, D-12277 Berlin;
Alexander Herzlinger; >256 KB; VRAM
ROMSPEED TOS speeder for TT030 (Part of OUTSIDE virtual
memory mangement for TT030);
MAXON Verlag; D-65734 Eschborn;
Uwe Seimet; >256 KB; USRS
GEMRAM Install GEM in RAM (ST,TT,FALCON);
Mailbox Maus MTK (Freeware);
Martin Osieka; 80-200 KB; MOGR
b) Patching a TOS file
You can use WINX to modify your ROM contents to be feasible
to be burned into EPROMs and reinstall a changed TOS version
including the WINX patches in your machine. This only works
with ORIGINAL unmodified (c) ATARI ROMs and is only allowed
for your personal use - you may not distribute ROM Image
files nowhere, neither modified nor unmodified.
To get ready to burn files, just start WINX in the desktop
or load in an original TOS Image file. After WINX changed
the contents, you can save it again for burning it.
c) Patching single GEM routines
If you have a machine with Original TOS 1.00, 1.02 or 1.04,
you can use WINX without copying GEM to RAM with GEMRAM.
Even here WINX.PRG must be in the AUTO folder. At the time
GEM is started, WINX intercepts the GEM startup and only
installs some (ok, these are some more) routines in RAM.
This is not possible with later TOS releases due to a
change (a very positive change) in AES and Desktops
subroutine calling mechanism. The modified GEM-routines
use only about 16 kByte of RAM.
In addition to the amount of memory for the RAM copy of GEM or
the RAM copy of GEM routines, WINX needs about 20 kByte for
the additional GEM-window structures.
WINX has been modified to work with the following official GEM
versions:
GEM(AES) TOS
1.20 GER 1.00/1.02
1.40 GER 1.04/1.06/1.62
3.00 GER 3.01
3.10 GER 2.05/3.05
3.20 GER/UK 2.06/3.06
3.31 4.01
3.40 4.02-4.04
WINX identifies GEM by the length of the GEM-TEXT-Segment.
GEM Versions of foreign/unknown countries are accepted if the
length is identical.
CONFIGURATION
Most of the changes WINX can do with GEM, can be turned on and off
with 'switches'. The setting of those switches can be changed by
editing the configuration file WINX.INF, which HAS to be in the
AUTO folder also. This is an ASCII file which can be easily
changed using a text editor.
Beginning with WINX version 2.1 global and local switches can be
distinguished. Global switches have effect for all applications,
whereas local switches can be set individually for each
applications. All further description can be seen from WINX.INF.
For the near future, all these settings should be able to be
performed with a CPX-module, but the enlightenig spark how this
can be done in a really user-friedly way did still not come
across my mind.
The repeat times of closer, full-size box and scroll arrows
can be set via WINX.CPX, too.
TERMINATE AND KEEP RESIDENT
WINX is a TKR-program and made of a TKR-loader, in which the
TKR-module 'WINX.TKR' has been inserted. The concept of TKR is
that programs, which need resident memory (TKR-modules), get this
amount of memory given from another program (the TKR-loader).
Following this concept, the TKR-module can be concentrated to its
real work and only uses a minimum of memory. The used TKR-Loader
can contain an unlimited amount of TKR-modules and other programs.
If you press the SHIFT-key while the TKR-Loader is started, the
loader asks for each TKR module if it should be started. The TKR-
loader displays the amount of memory that will be kept resident
after end of installation.
KNOWN PROBLEMS
- some older pprograms use the window handle as an index for own
internal tables; this of course is really bad programming style
and can cause those programs to crash while using many open
windows.
- Some programs limit their own acess to windows by a fixed number
without having a good reason (for example the original desktop).
- WINX Versions before 2.0 crashed, if a programme die used the
window handle -1 (NOWINDOW). This is fixed now.
- TOS14FIX only can be installed after WINX.
- TEMPLMON Versions < 2.0 must been started before WINX.
- Many programs cannot cope with the correct redraw of
background windows, mostly the scrolling in partly overlaped
windows quite often makes problems.
- MultiGEM will only allow 10 windows per application.
- WINX 2.1 will only be be supported by MultiGEM 2.00 (year of
copyright 1993!) (also see Update hints in MultiGEM Manual)
- since MultiGEM uses its own mapping of window handles, some new
wind_get() modes return wrong values:
WF_OWNER, WF_BOTTOM, WF_TOP (for owner and belowwin)
- BackDrop only works completely, if it is supported by the
used programs.
- Some graphic cards (i.e. their VDI-Driver) obviously have
problems with userdefined patterns. In this case, the switch
for defining relatively to which point a fill patterns should
be displayed, should be set to 0/0 and the maker of the card
and driver should be asked to change his software.
- If the switch for setting the fill pattern drawing to be
relative to the object is turned off, objects of windows are
always displayed completely. In addition to this, it might be
neccasary to switch off the redraw optimisation (for example
for XCONTROL)
- If a program opened very many windows (>20) there might be a
problem if the optimized merging of redraw messages is active
[L7] and the screen has to be displayed completely new.
- At the time exiting an application, GEM closes the windows of
accesories automatically. In some (seldom) cases, accessories
are not getting the information about the termination in time,
so they try to access windows, that already do not exist any
more. If WINX is set to report wrong window library calls, an
error message is displayed. The problem behind this is
conceptual in GEM. To avoid the display of those error messages
switch of the error report feature of WINX.
IMPORTANT NOTES FOR PROGRAMMERS
(see file WINXPROG.ENG)
VEKTORS, COOKIES, ETC.
In case c) under installation the LineF-Vektor is changed
(XBRA-ID is AESF).
WINX (and WINXCOOK, the support program for a WINX modified ROM)
generates the cookie WINX starting with version 2.1 of WINX. The
cookie holds a pointer to a function that can return version
specific information about WINX.
If the WINX cookie is installed, the GEMDOS trap is intercepted
on start of GEM (XBRA ID is WINX)
GEMRAM tries to find out the language for its messages looking at
the OSHEADER, after this, the _AKP cookie is checked (if existing).
On start from Desktop, the environment variable AE_LANG is
additionally checked. If the returned language is different from
german, english messages are used. The display format for the
date is derived from the _IDT cookie and if this cookie does not
exist, from the language setting.
COPYRIGHT
Author: (\/) Martin Osieka
Adress: Martin Osieka, Erbacherstr. 2,
D-64283 Darmstadt, Bundesrepublik Deutschland
Internet: Martin_Osieka@mtk.maus.de
If you write letters and would like to get an answer, please do
not forget to submit a self-adressed envelope with enough
international answer coupons or german stamps.
WINX is freeware and may be distributed in ANY form as long as
program and all texts are distributed in a complete, unmodified
form. The files are:
WINX.PRG, WINX.CPX patch program und configuration CPX module
WINXCOOK.PRG program for WINX modified ROMs
WINX.GER, WINXPROG.GER documentation (german)
WINX.ENG, WINXPROG.ENG documentation (english)
WINX.UPL upload-description (german)
LIESMICH short description (german)
NEUES what's new (german)
WARNING
This program worked stable and normal behaved for some time in
my own programming environment. Besides all tries to avoid bugs
in development and testing you have to be aware, that this is
based on the analysis of internal GEM Code. GEM has parts, but
I wouldn't claim that, what I saw 'structured'. For this reason
it easily may happen, that someone misses a point somewhere.
And this is in fact VERY easy. For this reason, I include the
following message:
*********************************************************************
* THIS PROGRAM COMES WITH ABSOLUTELY NO WARRANTY AGAINST MISUSE, *
* DATA LOSS, BRAIN DAMAGE, EARTHQUAKE AND WHATEVER MAY HAPPEN *
* BEFORE/AFTER OR WHILE USING IT. IT IS ABSOLUTELY *YOUR OWN* RISK. *
*********************************************************************
This cannot be emphazised enough, if you indeed use this program
together with dirty programming trick software.
MANY THANKS TO
Normen B. Kowalewski for translation of main parts of this document
SEE ALSO
Documentation of GEMRAM, ARROWFIX and WINCOLOR